\subsubsection{内容简介}
本书的目标读者是准备去北美找工作的码农，也适用于在国内找工作的码农，以及刚接触ACM算法竞赛的新手。

本书包含了一些经典题目的范例代码，经过精心编写，编码规范良好，适合在纸上默写。

怎么样才算是经典的算法题？一般经典的题目都有约定俗成的名称，例如“八皇后问题”，“0-1背包问题”等，这些名字已经固定下来了，类似于一个“成语”，一般说出名字，大家就都知道题目意思了，不用再解释题目内容，这就是所谓的“经典”。同时，本书的每一个题目，都至少在两本纸质书中出现过。

这本书的定位，与ACM算法竞赛类书籍不同。全书的题目比ACM竞赛简单，没有高难度的题目，但每道题目，都有详细生动的解释，还给出了可以直接在OJ上AC的代码。同时，题目的范围不限于算法竞赛，还包括了一些面试中常碰到的工程类题目。

全书的代码，使用“纯C + STL”的风格。本书中的代码规范，跟在公司中的工程规范略有不同，为了使代码短（方便迅速实现）:

\begindot
\item 所有代码都是单一文件。这是因为一般OJ网站，提交代码的时候只有一个文本框，如果还是
按照标准做法，比如分为头文件.h和源代码.cpp，无法在网站上提交；

\item 喜欢在全局定义一个最大整数，例如MAX。一般的OJ题目，都会有数据规模的限制，所以定义
一个常量MAX表示这个规模，可以不用动态分配内存，让代码实现更简单；

\item 经常使用全局变量。比如用几个全局变量，定义某个递归函数需要的数据，减少递归函数的参数
个数，就减少了递归时栈内存的消耗，可以说这几个全局变量是这个递归函数的“环境”。

\item 不提倡防御式编程。不需要检查malloc()/new 返回的指针是否为NULL；不需要检查内部函数入口
参数的有效性；使用纯C基于对象编程时，调用对象的成员方法，不需要检查对象自身是否为NULL。
\myenddot

本手册假定读者已经学过《数据结构》\footnote{《数据结构》，严蔚敏等著，清华大学出版社，
\myurl{http://book.douban.com/subject/2024655/}}，
《算法》\footnote{《Algorithms》，Robert Sedgewick, Addison-Wesley Professional, \myurl{http://book.douban.com/subject/4854123/}}
这两门课，熟练掌握C++或Java。

\subsubsection{Github地址}
本书是开源的，项目地址：\myurl{https://github.com/soulmachine/acm-cheat-sheet}

\subsubsection{北美求职微博群}
我和我的小伙伴们在这里：\myurl{http://q.weibo.com/1312378}
